package org.budo.support.lang.util;

import java.util.Random;

/**
 * @author lmw
 */
public class RandomUtil {
    public static int randomInt(Number min, Number max) {
        return (int) randomDouble(min.doubleValue(), max.doubleValue());
    }

    public static double randomDouble(Number min, Number max) {
        double randomValue = new Random().nextDouble();
        return min.doubleValue() + (max.doubleValue() - min.doubleValue()) * randomValue;
    }

    public static byte randomByte(byte min, byte max) {
        return (byte) randomDouble(min, max);
    }

    public static String randomNumberString(Integer len) {
        byte[] bytes = new byte[len];
        for (int i = 0; i < len; i++) {
            bytes[i] = randomByte((byte) '0', (byte) '9');
        }
        return new String(bytes);
    }

    public static String randomMixedString(Integer length) {
        byte[] bytes = new byte[length];
        Random random = new Random();
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = randomByte((byte) '0', (byte) '9');

            if (random.nextBoolean()) {
                bytes[i] = randomByte((byte) 'a', (byte) 'z');
            }

            if (random.nextBoolean()) {
                bytes[i] = randomByte((byte) 'A', (byte) 'Z');
            }
        }
        return new String(bytes);
    }
}
